#![allow(unused_imports, non_snake_case, non_camel_case_types)]
use super::windows::*;
use super::*;

#[repr(C)]
pub struct IDWriteLocalizedStringsVtbl {
	pub parent: IUnknownVtbl,
	pub GetCount: unsafe extern "system" fn(This: *mut IDWriteLocalizedStrings) -> UINT32,
	pub FindLocaleName: unsafe extern "system" fn(This: *mut IDWriteLocalizedStrings, localeName: *const WCHAR, index: *mut UINT32, exists: *mut BOOL) -> HRESULT,
	pub GetLocaleNameLength: unsafe extern "system" fn(This: *mut IDWriteLocalizedStrings, index: UINT32, length: *mut UINT32) -> HRESULT,
	pub GetLocaleName: unsafe extern "system" fn(This: *mut IDWriteLocalizedStrings, index: UINT32, localeName: *mut WCHAR, size: UINT32) -> HRESULT,
	pub GetStringLength: unsafe extern "system" fn(This: *mut IDWriteLocalizedStrings, index: UINT32, length: *mut UINT32) -> HRESULT,
	pub GetString: unsafe extern "system" fn(This: *mut IDWriteLocalizedStrings, index: UINT32, stringBuffer: *mut WCHAR, size: UINT32) -> HRESULT,
}
#[repr(C)]
pub struct IDWriteLocalizedStrings {
	pub lpVtbl: *const IDWriteLocalizedStringsVtbl,
}
impl IDWriteLocalizedStrings {
	#[inline]
	pub unsafe fn GetCount(&self) -> UINT32 {
		((*self.lpVtbl).GetCount)(self as *const _ as *mut _)
	}
	#[inline]
	pub unsafe fn FindLocaleName(&self, localeName: *const WCHAR, index: *mut UINT32, exists: *mut BOOL) -> HRESULT {
		((*self.lpVtbl).FindLocaleName)(self as *const _ as *mut _, localeName, index, exists)
	}
	#[inline]
	pub unsafe fn GetLocaleNameLength(&self, index: UINT32, length: *mut UINT32) -> HRESULT {
		((*self.lpVtbl).GetLocaleNameLength)(self as *const _ as *mut _, index, length)
	}
	#[inline]
	pub unsafe fn GetLocaleName(&self, index: UINT32, localeName: *mut WCHAR, size: UINT32) -> HRESULT {
		((*self.lpVtbl).GetLocaleName)(self as *const _ as *mut _, index, localeName, size)
	}
	#[inline]
	pub unsafe fn GetStringLength(&self, index: UINT32, length: *mut UINT32) -> HRESULT {
		((*self.lpVtbl).GetStringLength)(self as *const _ as *mut _, index, length)
	}
	#[inline]
	pub unsafe fn GetString(&self, index: UINT32, stringBuffer: *mut WCHAR, size: UINT32) -> HRESULT {
		((*self.lpVtbl).GetString)(self as *const _ as *mut _, index, stringBuffer, size)
	}
}
impl core::ops::Deref for IDWriteLocalizedStrings {
	type Target = IUnknown;
	#[inline]
	fn deref(&self) -> &IUnknown {
		unsafe { &*(self as *const IDWriteLocalizedStrings as *const IUnknown) }
	}
}
impl Interface for IDWriteLocalizedStrings {
	#[inline]
	fn uuidof() -> GUID {
		GUID { Data1: 0x08256209, Data2: 0x099a, Data3: 0x4b34, Data4: [0xb8, 0x6d, 0xc2, 0x2b, 0x11, 0x0e, 0x77, 0x71] }
	}
}
